package org.practice.springaichatmemory.service;

import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

@Service
public class SystemPromptService {
    
    private final ChatMemory chatMemory;
    
    // 从配置文件读取system prompt
    @Value("${chat.system-prompt:你是一个 helpful AI assistant}")
    private String systemPrompt;
    
    // 跟踪已初始化system prompt的会话
    private final Set<String> initializedSessions = ConcurrentHashMap.newKeySet();
    
    @Autowired
    public SystemPromptService(ChatMemory chatMemory) {
        this.chatMemory = chatMemory;
    }
    
    /**
     * 为指定会话初始化system prompt（如果尚未初始化）
     * @param sessionId 会话ID
     */
    public void initializeSystemPromptIfNeeded(String sessionId) {
        // 如果会话尚未初始化system prompt，则添加它
        if (!initializedSessions.contains(sessionId)) {
            // 添加system prompt到聊天记忆中
            chatMemory.add(sessionId, new SystemMessage(systemPrompt));
            // 标记会话已初始化
            initializedSessions.add(sessionId);
        }
    }
    
    /**
     * 获取当前配置的system prompt
     * @return system prompt内容
     */
    public String getSystemPrompt() {
        return systemPrompt;
    }
    
    /**
     * 清除会话的初始化状态（当会话被清除时调用）
     * @param sessionId 会话ID
     */
    public void clearSessionInitialization(String sessionId) {
        initializedSessions.remove(sessionId);
    }
}